RAID systems store and access multiple, heterogeneous individual hard drives as if the array were a single, larger disk. Distributing data over these multiple disks reduces the risk of losing the data if one drive fails and it also improves access time. RAID was developed for use in transaction or applications servers and large file servers. Currently, RAID is also utilized in desktop or workstation systems where high transfer rates are needed.
Systems today are often sold with a small number of drive types, typically with different performance characteristics (e.g., HDD & SSD). Over time, drive technology changes and different capacities of drives become available. For these or other reasons, clients may end up with a variety of drive capacities—for example a mixture of 300 GB and 600 GB drives.
Most RAID algorithms require that drives in the same array share the same capacity. This means that if, in the example, a 600 GB drive fails, then a 300 GB drive cannot be used as a “hot spare” drive (wherein a hot spare drive can be used to restore redundancy in the event of a drive failure) because its capacity is too small.
A first solution to this problem is to maintain separate pools of 300 GB and 600 GB spare drives. The drawback to this solution is that more spare drives may be required due to different capacities than would be required from a coverage plan based purely on reliability. For example, 300 GB spares cannot be used once all 600 GB spare drives are used up if a 600 GB drive fails.
A second solution to this problem is to provision purely 600 GB spare drives that can cover both array sizes. The drawback to this solution is that space is wasted when a 600 GB spare drive replaces a 300 GB drive. Further, a 600 GB spare drive is typically the most expensive (fastest and largest) type of drive in the system. US 20080109601 discloses systems and methods for RAID Restriping. One method includes selecting an initial RAID device for migration based on at least one score, creating an alternate RAID device, moving data from the initial RAID device to the alternate RAID device, and removing the initial RAID device.